package 力扣刷题.两数值和_01;

import java.util.Arrays;
import java.util.HashMap;

/**
    解题思路：   使用字典
        1、使用指针扫描给定的数组 算出target-当前数= ?
        2、将算出的数作为key  当前数的下标作为值存入 字典中（HashMap）
        3、判断 字典中是否存在当前数为key的键值对
            如果存在则将 键与值 存入数组返回
            此数组就是两数值和的解
 */
public class Demo01 {
    public static void main(String[] args) {
        int[] arr = {3,6,8,2,1,5};
        int[] ints = twoSum(arr, 5);
        System.out.println(Arrays.toString(ints));
    }

    public static int [] twoSum(int[] nums,int target){
        HashMap<Integer, Integer> map = new HashMap<>();
        int [] two = new int[2];
        int temp = 0;
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(nums[i])){
                two[temp] = map.get(nums[i]);
                temp++;
                two[temp] = i;
                return two;
            }else {
                map.put(target - nums[i],i);
            }
        }
        return null;
    }
}
